//搜索
var _sousuo={
	/**
	 *select下拉选项 获取选择值
	 *class_id class值或id值 如 '.status' 或 '#id' 
	 *返回url值
	 */
	 "selected":function(class_id,name,default_value){
	 	var url='';
	 	var value=$(""+class_id+" option:selected").val();
		if(value!=default_value){
			url+=name+"="+value+"&";
		}
		return url;
	 },
	 "value":function(class_id,name){
	 	var url='';
	 	var value=$.trim($(''+class_id).val());
	 	if(value!='' && value!=-1){
			url+=name+"="+value+"&";
		}
		return url;
	 },
	 'nameValue':function(nameValue){
	 	var url='';
	 	var value=$("input[name='"+nameValue+"']").val();
	 	if(value!=''){
			url+=nameValue+"="+value+"&";
		}
		return url;
	 },
	 /**
	 *返回url值get 获取
	 */
	 "url":function(url,link_url){
		if(url!=''){
			url=url.substring(0,url.length-1);
			url=link_url+"?"+url;
		}else{
			url=link_url;
		}
		window.location.href=url;
	},
	"alert":function(url,link_url){
		if(url!=''){
			url=url.substring(0,url.length-1);
			url=link_url+"?"+url;
		}else{
			url=link_url;
		}
		alert(url);
	}
}
/**
    *checkbox 全选 取消
	* 调用： _checkboxAll.all_move('checkbox 的name 值')取消全选
	* 调用： _checkboxAll.value('checkbox 的name 值')所选择中的值return 选中值
	*/
var _checkboxAll={
	"value":function(name,type,joins){//type class或name值
		 if(joins==undefined){
		 	joins=='_';
		 }
		 var objs=document.getElementsByName(name);
		 if(type){
			objs=$(''+name);
		}else{
			var objs=document.getElementsByName(name);
		}
    	 var arr='';
    	 for(var i=0;i<objs.length;i++){
        	if(objs[i].checked){
        	    arr+=objs[i].value+joins;
        	}
    	}
    	arr= arr.substr(0,arr.length-1);
    	return arr;
	},
	'all_move':function(name,allname,type){
		if(type){
			ch=$(''+name);
		}else{
			ch=document.getElementsByName(name);
		}
		if(document.getElementsByName(allname)[0].checked==true)
		{
			for(var i=0;i<ch.length;i++)
			{
				ch[i].checked=true;
			}
		}else{
			for(var i=0;i<ch.length;i++)
			{
				ch[i].checked=false;
			}
		}
	},
	'check_type':function(name){//选择处理
			var objs=document.getElementsByName(name);
			var type=objs[0].checked;
			if(type){objs[0].value=1;}else{objs[0].value=0;}
	},
}

/*常用验证数据组合*/
var _check={
	//是否为空字符
	'isempty':function(str){
		//str.replace(/^\s+|\s+$/g, '');
		str = trim(str);
	 	if(str.length==0){
			return false;
		}
		return true;
	},

	//是否为英文
	"az":function(string){
		var parent=/^[A-Za-z]+$/;
		if(!parent.test(string)){
	  		return false;
	  	}else{
			return true;
		}
	},
	"a_z":function(string){//英文_
		var parent=/^[A-Za-z_]+$/;
		if(!parent.test(string)){
	  		return false;
	  	}else{
			return true;
		}
	},
	"num": function(s,status){//是否为正整数,status==true false
		if(status==true){
			var re = /^[0-9]*[1-9][0-9]*$/;
		}else{
			var re = /^[1-9][0-9]*$/;
		}
    	var re = /^[0-9]*[1-9][0-9]*$/;
    	return re.test(s);
	},
	'mobile':function(str){
		var reg = /^0?1[3|4|5|8][0-9]\d{8}$/;
		if (!reg.test(mobile)) {
	    	return false;
		}return true;
	},
	'tell':function(str){/*匹配国内电话号码(0511-4405222 或 021-87888822) **/
		var result = str.match(/\d{3}-\d{8}|\d{4}-\d{7}/);
    	if (result == null) return false;
    		return true
	},
	'email':function(str){// 判断输入是否是有效的电子邮件
		var result = str.match(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/);
    	if (result == null) return false;
    	return true;
	},
	'card':function(str){//匹配身份证(15位或18位)
		var result = str.match(/\d{15}|\d{18}/);
    	if (result == null) return false;
    	return true;
	},
 	'isnozh':function(str) { // 判断输入是否是一个由 0-9 / A-Z / a-z 组成的字符串
    	var result = str.match(/^[a-zA-Z0-9]+$/);
    	if (result == null) return false;
    	return true;
	},
	'iszh':function(str){//不能含义中文
		var reg = /^[u4E00-u9FA5]+$/;
		if(!reg.test(str)){
			return false;
		}
		return true;
	},
	'iszhchar':function(str){//含有中文字符
		var  reg=/[^\x00-\xFF]/;
		if(!reg.test(str)){
			return false;
		}
		return true;
	},
	'price':function(str){//价格
		str = trim(str);
		var reg =/^\d+\.?\d{0,2}$/;
		if(!reg.test(str)){
			return false;
		}
		return true;
	},
	'isdouble':function(str){//价格
		str = trim(str);
		var reg=/^[-\+]?\d+(\.\d+)?$/;
		if(!reg.test(str)){
			return false;
		}
		return true;
	},
	'isint':function(str){//isint是否是整数
		str = trim(str);
		var reg =/^[-\+]?\d+$/;
		if(!reg.test(str)){
			return false;
		}
		return true;
	},
	'isen':function(str){//是否是英文//English isen;
		str = trim(str);
		var reg= /^[A-Za-z]+$/;
		if(!reg.test(str)){
			return false;
		}
		return true;
	},
	'isnumber':function(str){//数字;
	 	return !isNaN(str);
	},
	'mypwd':function(str) { // 判断输入是否是一个由 0-9 / A-Z / a-z 组成的字符串
    	var result = str.match(/^[A-Za-z0-9_.!@#$%^&*-+=]+$/);
    	if (result == null) return false;
    	return true;
	},

}
var _h={
	'delupload':function(str){//去掉文件地址签前面的。
			return str.substring(1);
	},
	'lrtrim':function(){//去左右空格
		return rtrim(ltrim(str));
	},
	'AddFavorite':function(url,title){//加入收藏夹
		try {
		    window.external.addFavorite(url,title)
		}catch (e) {
		    try {
		        window.sidebar.addPanel(url,title,"")
		    } catch (e) {
		        alert("加入收藏失败，请使用Ctrl+D进行添加")
		    }
		}
	},
	'ucFirst':function(type){//首字母大写
		var _str;
		for(var i=0;i<type.length;i++){
			if(i==0){
			_str+=type[0].toUpperCase();
			}else{
			_str+=type[i]
			}
		}
		return _str;
	},
	'uniqueId':function uniqueId(){//随机数时间戳
	    var a = Math.random, b = parseInt;
	    return Number(new Date()).toString() + b(10 * a()) + b(10 * a()) + b(10 * a());
	},
	//拆分整数与小数
	'splits':function(str){//拆分整数与小数
	    var value = new Array('', '');
	    temp = str.split(".");
	    for (var i = 0; i < temp.length; i++) {
	        value = temp;
	    }
	    return value;
	},
	'number_format':function(number, decimals, dec_point, thousands_sep) {
	    /*
	    * 参数说明：
	    * number：要格式化的数字
	    * decimals：保留几位小数
	    * dec_point：小数点符号
	    * thousands_sep：千分位符号
	    * */
	    number = (number + '').replace(/[^0-9+-Ee.]/g, '');
	    var n = !isFinite(+number) ? 0 : +number,
	        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
	        sep = (typeof thousands_sep === undefined) ? ',' : thousands_sep,
	        dec = (typeof dec_point === undefined) ? '.' : dec_point,
	        s = '',
	        toFixedFix = function (n, prec) {
	            var k = Math.pow(10, prec);
	            return '' + Math.ceil(n * k) / k;
	        };

	    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
	    var re = /(-?\d+)(\d{3})/;
	    while (re.test(s[0])) {
	        s[0] = s[0].replace(re, "$1" + sep + "$2");
	    }

	    if ((s[1] || '').length < prec) {
	        s[1] = s[1] || '';
	        s[1] += new Array(prec - s[1].length + 1).join('0');
	    }
	    return s.join(dec);
	},
	'transform':function(tranvalue){//金额大写转换函数 transform('123431233132.23')
	    try {
	        var i = 1;
	        var dw2 = new Array("", "万", "亿"); //大单位
	        var dw1 = new Array("拾", "佰", "仟"); //小单位
	        var dw = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //整数部分用
	        //以下是小写转换成大写显示在合计大写的文本框中
	        //分离整数与小数
	        var source = splits(tranvalue);
	        var num = source[0];
	        var dig = source[1];
	        //转换整数部分
	        var k1 = 0; //计小单位
	        var k2 = 0; //计大单位
	        var sum = 0;
	        var str = "";
	        var len = source[0].length; //整数的长度
	        for (i = 1; i <= len; i++) {
	            var n = source[0].charAt(len - i); //取得某个位数上的数字
	            var bn = 0;
	            if (len - i - 1 >= 0) {
	                bn = source[0].charAt(len - i - 1); //取得某个位数前一位上的数字
	            }
	            sum = sum + Number(n);
	            if (sum != 0) {
	                str = dw[Number(n)].concat(str); //取得该数字对应的大写数字，并插入到str字符串的前面
	                if (n == '0') sum = 0;
	            }
	            if (len - i - 1 >= 0) { //在数字范围内
	                if (k1 != 3) { //加小单位
	                    if (bn != 0) {
	                        str = dw1[k1].concat(str);
	                    }
	                    k1++;
	                } else { //不加小单位，加大单位
	                    k1 = 0;
	                    var temp = str.charAt(0);
	                    if (temp == "万" || temp == "亿") //若大单位前没有数字则舍去大单位
	                        str = str.substr(1, str.length - 1);
	                    str = dw2[k2].concat(str);
	                    sum = 0;
	                }
	            }
	            if (k1 == 3) { //小单位到千则大单位进一
	                k2++;
	            }
	        }
	        //转换小数部分
	        var strdig = "";
	        if (dig != "") {
	            var n = dig.charAt(0);
	            if (n != 0) {
	                strdig += dw[Number(n)] + "角"; //加数字
	            }
	            var n = dig.charAt(1);
	            if (n != 0) {
	                strdig += dw[Number(n)] + "分"; //加数字
	            }
	        }
	        str += "元" + strdig;
	    } catch (e) {
	        return "0元";
	    }
	    return str;
	}
}
var _w_c={
  //这里的宽度和高度不包括菜单栏、工具栏以及滚动条等的高度
  'in_w':function(){//返回窗口的文档显示区的宽度。 包含滚动条
      return window.innerWidth;
  },
  'c_in_w':function(){//网页可见区域宽 不包含滚动条
      return document.documentElement.clientWidth || document.body.clientWidth;
  },
  'c_in_b_w':function(){//网页可见区域宽包括边线的宽 不包括margin。
      return document.documentElement.offsetWidth || document.body.offsetWidth;
  },
  'c_in_total_w':function(){//网页正文全文宽
      return document.documentElement.scrollWidth || document.body.scrollWidth;
  },
  'in_h':function(){//返回窗口的文档显示区的高度。 包含滚动条
      return window.innerHeight;
  },
  'c_in_h':function(){//网页可见区域高 不包含滚动条
      return document.documentElement.clientHeight || document.body.clientHeight;
  },
  'c_in_b_h':function(){//网页可见区域宽包括边线的高 不包括margin。
      return document.documentElement.offsetHeight || document.body.offsetHeight;
  },
  'c_in_total_h':function(){//网页正文全文高
      return document.documentElement.scrollHeight || document.body.scrollHeight;
  },
  'out_w':function(){//返回浏览器窗口的外部宽度
      return window.outerWidth;
  },
  'out_h':function(){//返回浏览器窗口的外部高度
      return window.outerHeight;
  },
  //windwo对象的pageXOffset属性总是可以返回滚动的长度，不管doctype是什么类型的，所有浏览器都支持这个属性，除了IE8及其更低版本的IE浏览器。
  //window对象的scrollX属性总是可以返回滚动的长度，不管doctype是什么类型，Firefox, Chrome和Safari都支持该属性。
  //如果文档中没有指明文档类型，在IE, Firefox, Opera, Chrome和Safari中，通过body的scrollLeft可以获取滚动的数值。
  //如果有指明文档类型，那么在IE, Firefox和Opera中，可以通过html的scrollLeft属性获取滚动的数值，但是在Chrome和Safari中的值总是为0.
  //如果没有指明文档类型，那么html的scrollLeft属性总是返回0.
  'scroll_X':function(){//返回文档/页面水平方向滚动的像素值
      var scrollLeft =  window.scrollX != undefined ? window.scrollX : window.pageXOffset;
      return scrollLeft != undefined ? scrollLeft : (document.documentElement || document.body).scrollLeft;
  },
  'scroll_y':function(){//返回文档/页面垂直方向已滚动的像素值
      var scrollTop =  window.scrollY != undefined ? window.scrollY : window.pageYOffset;
      return scrollTop != undefined ? scrollTop : (document.documentElement || document.body).scrollTop;
  },
  'scrolly_by':function(w,h){//点击按钮将文档窗口在水平和垂直方向各滚动 100px
      window.scrollBy(w,h);
  },
  'sys_x':function(){//返回浏览器左边界到操作系统桌面左边界的水平距离。
      return window.screenX;
  },
  'sys_y':function(){//返回浏览器顶部到操作系统桌面顶部的垂直距离。
      return window.screenY;
  },
  'avail_w':function(){//可用的屏幕宽度
      return window.screen.availWidth;
  },
  'avail_h':function(){//可用的屏幕高度
      return window.screen.availHeight;
  },
  "open":function(url,name,iWidth,iHeight){//url 打开url地址//name窗口的名称//var iWidth弹出窗口的宽度;// var iHeight弹出窗口的高度;//获得窗口的垂直位置
      if(iHeight){
		 	    var iTop = (_w_c.avail_h()-30- iHeight) / 2;
  		 }else{
  		 	 var iTop =0;
  		 }
      if(iWidth){
  			 var iLeft = (_w_c.avail_w()-10-iWidth) / 2;
  		}else{
  			var iLeft=0;
  		}
      if(iWidth && iHeight){
    		 	window.open(url, name, 'height='+iHeight+',innerHeight='+iHeight+',width='+iWidth+',innerWidth='+iWidth+',top='+iTop+',left='+iLeft+',status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no');
    		 	return false;
    	}else if(iWidth){
    		 	window.open(url, name,'width='+iWidth+',innerWidth='+iWidth+',top='+iTop+',left='+iLeft+',status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no');
    		 	return false;
    	}else if(iHeight){
    		 	window.open(url, name, 'height='+iHeight+',innerHeight='+iHeight+',top='+iTop+',left='+iLeft+',status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no');
    		 	return false;
    	}else{
    		 	window.open(url, name,'status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no');
    		 	return false;
    	}
	},
}
//加载更多插件
var _load_more={
    'content':null,
    'start':function(obj){
        //获取文档完整的高度
        var maxheight=_w_c.c_in_total_h();
      //获取当前滚动条地址
        var top=_w_c.scroll_y();
        //获取当前可视范围的高度
        var height=_w_c.in_h();
        if(height==undefined){height=_w_c.c_in_h();}
        //滚动事件触发代码如下
        //console.log(top,height,(top+height),maxheight);
        if(top+height== maxheight){
            //obj.append(_load_more.content);
			   obj();
        }else{
          return false;
        }
    },
    'demo':function(){//使用方法
      // <script src="js/jquery-1.10.2.min.js"></script>
      // <script src="_win.js"></script>
      // <script>
      // var html='';
      // var i=0;
      // var len=i+5;
      // for(i;i<len;i++){
      //   html+="<p>世界的繁华的首付款十分深刻反思款到即发黄金时刻都会发生肯定会福克斯的飞机开始大幅i"+i+"</p>"
      // }
      // _load_more.content=html;
      // //滚动事件触发代码如下
      // window.onscroll=function(){
      //   var obj=$('#load_more');
      //   _load_more.start(obj);
      // }
      // </script>
    }
}

/*时间转换
*_myTime.DateToUnix('2016-04-12 10:49:59');
*_myTime.UnixToDate(1460429399));
*/
var _myTime={
      /**
       * 当前时间戳
       * @return <int>    unix时间戳(秒)
       */
      CurTime: function(){
        return Date.parse(new Date())/1000;
      },
      /**
       * 日期 转换为 Unix时间戳
       * @param <string> 2014-01-01 20:20:20 日期格式
       * @return <int>    unix时间戳(秒)
       */
      DateToUnix: function(string) {
        var f = string.split(' ', 2);
        var d = (f[0] ? f[0] : '').split('-', 3);
        var t = (f[1] ? f[1] : '').split(':', 3);
        return (new Date(
            parseInt(d[0], 10) || null,
            (parseInt(d[1], 10) || 1) - 1,
            parseInt(d[2], 10) || null,
            parseInt(t[0], 10) || null,
            parseInt(t[1], 10) || null,
            parseInt(t[2], 10) || null
            )).getTime() / 1000;
      },
      /**
       * 时间戳转换日期
       * @param <int> unixTime  待时间戳(秒)
       * @param <bool> isFull  返回完整时间(Y-m-d 或者 Y-m-d H:i:s)
       * @param <int> timeZone  时区
       */
      UnixToDate: function(unixTime, isFull, timeZone) {
        if (typeof (timeZone) == 'number')
        {
          unixTime = parseInt(unixTime) + parseInt(timeZone) * 60 * 60;
        }
        var time = new Date(unixTime * 1000);
        var ymdhis = "";
        ymdhis += time.getUTCFullYear() + "-";
        ymdhis += (time.getUTCMonth()+1) + "-";
        ymdhis += time.getUTCDate();
        if (isFull === true)
        {
          ymdhis += " " + time.getUTCHours() + ":";
          ymdhis += time.getUTCMinutes() + ":";
          ymdhis += time.getUTCSeconds();
        }
        return ymdhis;
      }
}

function utf16to8(str) {
    var out, i, len, c;

    out = "";
    len = str.length;
    for(i = 0; i < len; i++) {
        c = str.charCodeAt(i);
        if ((c >= 0x0001) && (c <= 0x007F)) {
            out += str.charAt(i);
        } else if (c > 0x07FF) {
            out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
            out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));
            out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
        } else {
            out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));
            out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
        }
    }
    return out;
}
function utf8to16(str) {
    var out, i, len, c;
    var char2, char3;

    out = "";
    len = str.length;
    i = 0;
    while(i < len) {
        c = str.charCodeAt(i++);
        switch(c >> 4)
        {
          case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
            // 0xxxxxxx
            out += str.charAt(i-1);
            break;
          case 12: case 13:
            // 110x xxxx   10xx xxxx
            char2 = str.charCodeAt(i++);
            out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
            break;
          case 14:
            // 1110 xxxx  10xx xxxx  10xx xxxx
            char2 = str.charCodeAt(i++);
            char3 = str.charCodeAt(i++);
            out += String.fromCharCode(((c & 0x0F) << 12) |
                                           ((char2 & 0x3F) << 6) |
                                           ((char3 & 0x3F) << 0));
            break;
        }
    }

    return out;
}

var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var base64DecodeChars = new Array(
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
    52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
    -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
    15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
    -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);

function base64encode(str) {
    var out, i, len;
    var c1, c2, c3;
    len = str.length;
    i = 0;
    out = "";
    while(i < len) {
        c1 = str.charCodeAt(i++) & 0xff;
        if(i == len)
        {
            out += base64EncodeChars.charAt(c1 >> 2);
            out += base64EncodeChars.charAt((c1 & 0x3) << 4);
            out += "==";
            break;
        }
        c2 = str.charCodeAt(i++);
        if(i == len)
        {
            out += base64EncodeChars.charAt(c1 >> 2);
            out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
            out += base64EncodeChars.charAt((c2 & 0xF) << 2);
            out += "=";
            break;
        }
        c3 = str.charCodeAt(i++);
        out += base64EncodeChars.charAt(c1 >> 2);
        out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
        out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
        out += base64EncodeChars.charAt(c3 & 0x3F);
    }
    return out;
}

function base64decode(str) {
    var c1, c2, c3, c4;
    var i, len, out;

    len = str.length;
    i = 0;
    out = "";
    while(i < len) {
        /* c1 */
        do {
            c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
        } while(i < len && c1 == -1);
        if(c1 == -1)
            break;

        /* c2 */
        do {
            c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
        } while(i < len && c2 == -1);
        if(c2 == -1)
            break;

        out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));

        /* c3 */
        do {
            c3 = str.charCodeAt(i++) & 0xff;
            if(c3 == 61)
                return out;
            c3 = base64DecodeChars[c3];
        } while(i < len && c3 == -1);
        if(c3 == -1)
            break;

        out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));

        /* c4 */
        do {
            c4 = str.charCodeAt(i++) & 0xff;
            if(c4 == 61)
                return out;
            c4 = base64DecodeChars[c4];
        } while(i < len && c4 == -1);
        if(c4 == -1)
            break;
        out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
    }
    return out;
}
// 有时候用base64_encode加密后,以GET的形式传到其他页面,用base64_decode解密的时候,出现乱码.
// 后来经过检查,发现有一些中文字符,用GET形式传过来的时候,+号会被替换成空格.
// 为了防止出现乱码的情况,我做了一步替换,然后再解密,果然,乱码的问题,不复存在了!
// 比如你以GET的形式传过来一个oid变量,那么解密还原的时候,先用+号替换空格.那么输出就正常了.
// 如下: $oid=base64_decode(str_replace(" ","+",$_GET[oid]));
function str_encode(str){
    return base64encode(utf16to8(str));
}
function str_decode(str){
        return utf8to16(base64decode(str));
}
//js 加密
function jscypto_e(str){//encodeURI 对中文字符的处理
     return base64encode(encodeURI(str));
}
//js 解密
function jscypto_d(str){
    return  decodeURI(base64decode(str));
}
//js 不过滤& ~登等字符
function jscypto_e_c(str){
    return base64encode(encodeURIComponent(str));
}
function jscypto_d_c(str){
     return decodeURIComponent(base64decode(str));
}
_html={
    //html 转实体
    'html_encode':function(str){
        var s='';
        if(str.length==0) return "";
        s=str.replace(/&/g,"&amp;");
        s=str.replace(/</g,"&lt;");
        s=str.replace(/>/g,"&gt;");
        s=str.replace(/ /g,"&nbsp;");
        s=str.replace(/\'/g,"&#39");
        s=str.replace(/\"/g,"&quot;");
        s=str.replace(/~/g,"&#126;");
        return s;
    },
    'html_decode':function(str){
        var s='';
        if(str.length==0) return "";
        s=str.replace(/&amp;/g,"&");
        s=str.replace(/&lt;/g,"<");
        s=str.replace(/&gt;/g,">");
        s=str.replace(/&nbsp;/g," ");
        s=str.replace(/&#39;/g,"\'");
        s=str.replace(/&quot;/g,"\"");
        s=str.replace(/&#126;/g,"~");
        return s;
    },
}
_ajaxs={
	'sfrom':function(id){
		return $(""+id).serialize();
	},
	'from':function(id){
		var data = $(""+id).serializeArray();
		// return JSON.stringify(data);
		var arr=JSON.stringify(data);
		arr=_html.html_encode(arr);
		return jscypto_e(arr);//对&等符合的处理。
	},
	'from_nocypto':function(id){
		var data = $(""+id).serializeArray();
		return JSON.stringify(data);
	},
	'xmlhttp':function(){
		var xmlhttp;
		if (window.XMLHttpRequest){ //  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
		    xmlhttp=new XMLHttpRequest();
		}else{// IE6, IE5 浏览器执行代码
		    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		return xmlhttp;
	},
	'post':function(url,data,s_e,returntype,async){//data=> 'name='+value  //type默认json
		if(async==undefined){
			async=true;
		}else{
			async=async;
		}
		returntype=returntype||'json';
		if(data==undefined || data==''){
			data='ajaxs=1';
		}else{
			data=data+"&ajaxs=1";
		}
		xmlhttp=_ajaxs.xmlhttp();
		xmlhttp.onreadystatechange=function(){

			if (xmlhttp.readyState==4 && xmlhttp.status==200){
        		var r_data=xmlhttp.responseText;
        		//console.log(r_data);
        		if(returntype=='json'){
        			r_data=JSON.parse(r_data);
        		}
        		s_e(r_data);
    		}
		}
		xmlhttp.open("post",url,async);
		xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=utf-8");
		//xmlhttp.setRequestHeader("Content-type","application/json;charset=utf-8");--->file_get_contents('php://input') 获取数据
		xmlhttp.send(data);
	},

	'get':function(url,s_e,async){//为了避免这种情况，请向 URL 添加一个唯一的 ID：
		async=async||true;
		xmlhttp=_ajaxs.xmlhttp();
		xmlhttp.onreadystatechange=function(){
		    if (xmlhttp.readyState==4 && xmlhttp.status==200){
		     	var r_data=xmlhttp.responseText;
        		r_data=JSON.parse(r_data);
        		s_e(r_data);
		    }
  		}
		xmlhttp.open("get",url,true);
		xmlhttp.send();
	},
}
